# -*- coding: utf-8 -*-

"""
DateTime   : 2020/12/18 11:30
Author     : ZhangYafei
Description: 趣味体重排序
丽在一个"减肥会所"，每到月底小丽就很担心，因为每个月都会公布一份成员体重列表，每个月她都是列表中的最后一个，这意味着她是最重的。于是她就建议会长修改规则，比如新的规则如下：
新的排序规则将是按照“权重”来进行排序，如果权重相同，则按照体重字符串来进行排序。(权重的计算规则:体重数字不同位数上的数字的总和）
给定某种正常顺序俱乐部的成员的体重字符串，如何实现按照新规则排序呢？ 测试用例: 输入: "99 189 86 75" 输出: "75 86 189 99"
"""

def order_weight(weight_string):
    weight_list = weight_string.split(' ')
    def helper(x):
        if not x:
            return x
        y = int(x)
        z = 0
        while y:
            z += y % 10
            y = int(y / 10)
        return (z, x)

    weight_list.sort(key=helper)
    new_weight_string = " ".join(weight_list)
    return new_weight_string

def order_weight2(_str):
    return' '.join(sorted(_str.split(' '),key = lambda x: sum(int(c) for c in x)))


if __name__ == '__main__':
    weight_string = '99 189 86 75'
    new_weight = order_weight(weight_string)
    # new_weight2 = order_weight2(weight_string)
    print(new_weight)

